ক্লোজারে (Clojure) বুলিয়ান এক্সপ্রেশন এবং শর্ট-সার্কিট ইভ্যালুয়েশন (Short-Circuit Evaluation) প্রোগ্রামিংয়ের গুরুত্বপূর্ণ অংশ। বুলিয়ান এক্সপ্রেশন হল এমন এক্সপ্রেশন যা true
বা false
হিসেবে মূল্যায়ন করে। শর্ট-সার্কিট ইভ্যালুয়েশন একটি অপ্টিমাইজেশন কৌশল, যেখানে নির্দিষ্ট শর্ত মিট হলে বাকি অংশ মূল্যায়ন না করেই এক্সপ্রেশন শেষ হয়।
ক্লোজারে, বুলিয়ান এক্সপ্রেশন সাধারণত true
বা false
ভ্যালু প্রদান করে এবং সাধারণ লজিক্যাল অপারেটর ব্যবহার করে তৈরি করা হয়, যেমন and
, or
, এবং not
। ক্লোজারে nil
এবং false
ছাড়া সবকিছু সত্যি (truthy) হিসেবে বিবেচিত হয়।
(def age 20)
(def adult? (>= age 18)) ; age যদি 18 বা তার বেশি হয়, তাহলে adult? হবে true
এখানে >=
অপারেটর ব্যবহার করে adult?
ভ্যারিয়েবলের মান নির্ধারণ করা হয়েছে। age
যদি ১৮ বা তার বেশি হয়, তাহলে adult?
এর মান হবে true
অন্যথায় false
।
শর্ট-সার্কিট ইভ্যালুয়েশন এমন একটি কৌশল যেখানে লজিক্যাল অপারেটরের প্রথম অংশেই এক্সপ্রেশনের ফলাফল নির্ধারণ করা গেলে, পরবর্তী অংশগুলিকে আর মূল্যায়ন করা হয় না। ক্লোজারে and
এবং or
অপারেটর এই শর্ট-সার্কিট ইভ্যালুয়েশন প্রক্রিয়া অনুসরণ করে।
and
অপারেটর এবং Short-Circuit Evaluationand
অপারেটর তখনই true
রিটার্ন করে যখন সব এক্সপ্রেশন সত্য হয়। প্রথম কোনো এক্সপ্রেশন false
হলে, বাকি অংশগুলি মূল্যায়ন করা হয় না, কারণ একবার false
পাওয়া গেলে ফলাফলও false
হবে।
(defn check-age-and-status [age status]
(and (>= age 18) (= status "active")))
(check-age-and-status 20 "active") ; আউটপুট: true
(check-age-and-status 15 "active") ; আউটপুট: false, কারণ প্রথম শর্তই false
এখানে, (>= age 18)
শর্তটি false
হলে (= status "active")
পরীক্ষা করা হয় না, যা শর্ট-সার্কিট ইভ্যালুয়েশনের উদাহরণ।
or
অপারেটর এবং Short-Circuit Evaluationor
অপারেটর তখনই true
রিটার্ন করে যখন অন্তত একটি এক্সপ্রেশন সত্য হয়। প্রথম কোনো এক্সপ্রেশন true
হলে, বাকি অংশগুলি মূল্যায়ন করা হয় না, কারণ প্রথম true
ভ্যালু পেলেই ফলাফলও true
হবে।
(defn check-permission [role permission]
(or (= role "admin") (= permission "granted")))
(check-permission "admin" "denied") ; আউটপুট: true, কারণ প্রথম শর্ত true
(check-permission "user" "granted") ; আউটপুট: true, কারণ দ্বিতীয় শর্ত true
(check-permission "user" "denied") ; আউটপুট: false
এখানে, role
যদি "admin"
হয়, তাহলে পরবর্তী শর্ত (= permission "granted")
মূল্যায়ন করার প্রয়োজন হয় না, কারণ or
অপারেটর প্রথম শর্ত true
পেলেই true
রিটার্ন করে।
not
অপারেটরnot
অপারেটর একটি একক বুলিয়ান এক্সপ্রেশনকে উল্টো মান প্রদান করে। এটি true কে false এবং false কে true করে।
(def logged-in false)
(def guest? (not logged-in)) ; আউটপুট: true
এখানে logged-in
ভ্যারিয়েবলের মান false
হওয়ায় guest?
হবে true
।
অপারেটর | কাজ | শর্ট-সার্কিটের ধরন |
---|---|---|
and | সব এক্সপ্রেশন সত্য হলে true | প্রথম false পেলে বাকি অংশ ইভ্যালুয়েট হয় না |
or | কোনো একটি এক্সপ্রেশন সত্য হলে true | প্রথম true পেলে বাকি অংশ ইভ্যালুয়েট হয় না |
not | এক্সপ্রেশন উল্টায় | শুধু একক এক্সপ্রেশনে ব্যবহৃত হয় |
ক্লোজারে বুলিয়ান এক্সপ্রেশন এবং শর্ট-সার্কিট ইভ্যালুয়েশন কার্যকর শর্ত নির্ধারণ ও অপ্টিমাইজেশনের জন্য গুরুত্বপূর্ণ এবং প্রোগ্রামিংকে আরও কার্যকর ও সুরক্ষিত করে।
common.read_more